/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.stefanini.mundial2014.controller;

import com.stefanini.mundial2014.ejbs.EquipoManager;
import com.stefanini.persitencia.Equipo;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;

/**
 *
 * @author Lady
 */
@Named(value = "equiposadmincontroller")
@SessionScoped
public class EquiposAdminController implements Serializable {
    private static final long serialVersionUID =1L;
    
    private Equipo equipo;
            
    @EJB
    private EquipoManager equipoManager;
    
    private boolean realizarConsulta = true;
    private boolean isEdit = false;
    private List<Equipo> equipos;

       
     public void initCreate() {
        equipo = new Equipo();
        isEdit = false;
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("/Mundial2014/pages/equipos/equiposEdit.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, "Error al redireccionar", ex);
        }

    }
 public void initEdit(Equipo equipoEdit) {
        this.equipo = equipoEdit;
        isEdit = true;
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("/Mundial2014/pages/equipos/equiposEdit.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, "Error al redireccionar", ex);
        }

    }
 public void eliminarEquipo(Equipo equipo) {
        
        FacesContext ctx = FacesContext.getCurrentInstance();

        if (equipoManager.eliminarEquipo(equipo)) {
            ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info",
                    "Equipo eliminado exitosamente"));
            realizarConsulta = true;
            consultarEquipos();
        } else {
            ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                    "Error al eliminar el equipo"));
        }

    }
 public void guardarEquipo() {

        FacesContext ctx = FacesContext.getCurrentInstance();

        if (!isEdit && equipoManager.verificarEquipoExistente(equipo.getNombreEquipo())) {
            ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                    "Ya existe un equipo con el nombre ingresado"));
        } else {
            
            if (equipoManager.guardarEquipo(equipo, isEdit)) {
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info",
                        "Equipo creado exitosamente"));

                realizarConsulta = true;
                
                try {
                    ctx.getExternalContext().redirect("/Mundial2014/pages/equipos/equipos.xhtml");
                } catch (IOException ex) {
                    Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, "Error al redireccionar", ex);
                }

            } else {
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                        "Error al crear el equipo"));
            }
        }
    }
 public void consultarEquipos() {
        if(realizarConsulta) {
            equipos = equipoManager.getAllEquipos();
            realizarConsulta = false;
        }
    }
public Equipo getEquipo() {
        return equipo;
    }

    public void setEquipo(Equipo equipo) {
        this.equipo = equipo;
    }
    /**
     * @return the equipos
     */
    public List<Equipo> getEquipos() {
        return equipos;
    }

    /**
     * @param equipos the equipos to set
     */
    public void setEquipos(List<Equipo> equipos) {
        this.equipos = equipos;
    }
}

    

